﻿// Decompiled with JetBrains decompiler
// Type: TaleWorlds.CampaignSystem.SaveableCampaignTypeDefiner
// Assembly: TaleWorlds.CampaignSystem, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
// MVID: E85F8C15-4DF6-4E9C-A58A-29177E40D07A
// Assembly location: D:\steam\steamapps\common\Mount & Blade II Bannerlord\bin\Win64_Shipping_Client\TaleWorlds.CampaignSystem.dll

using System;
using System.Collections.Generic;
using TaleWorlds.CampaignSystem.Actions;
using TaleWorlds.CampaignSystem.BarterSystem;
using TaleWorlds.CampaignSystem.BarterSystem.Barterables;
using TaleWorlds.CampaignSystem.CampaignBehaviors;
using TaleWorlds.CampaignSystem.CharacterDevelopment;
using TaleWorlds.CampaignSystem.ComponentInterfaces;
using TaleWorlds.CampaignSystem.Conversation.Persuasion;
using TaleWorlds.CampaignSystem.CraftingSystem;
using TaleWorlds.CampaignSystem.Election;
using TaleWorlds.CampaignSystem.Encounters;
using TaleWorlds.CampaignSystem.GameState;
using TaleWorlds.CampaignSystem.Issues;
using TaleWorlds.CampaignSystem.Issues.IssueQuestTasks;
using TaleWorlds.CampaignSystem.LogEntries;
using TaleWorlds.CampaignSystem.Map;
using TaleWorlds.CampaignSystem.MapEvents;
using TaleWorlds.CampaignSystem.MapNotificationTypes;
using TaleWorlds.CampaignSystem.Party;
using TaleWorlds.CampaignSystem.Party.PartyComponents;
using TaleWorlds.CampaignSystem.Roster;
using TaleWorlds.CampaignSystem.SaveCompability;
using TaleWorlds.CampaignSystem.Settlements;
using TaleWorlds.CampaignSystem.Settlements.Buildings;
using TaleWorlds.CampaignSystem.Settlements.Locations;
using TaleWorlds.CampaignSystem.Settlements.Workshops;
using TaleWorlds.CampaignSystem.Siege;
using TaleWorlds.CampaignSystem.TournamentGames;
using TaleWorlds.Core;
using TaleWorlds.Library;
using TaleWorlds.ObjectSystem;
using TaleWorlds.SaveSystem;
using TaleWorlds.SaveSystem.Resolvers;

#nullable disable
namespace TaleWorlds.CampaignSystem
{
  public class SaveableCampaignTypeDefiner : SaveableTypeDefiner
  {
    public SaveableCampaignTypeDefiner()
      : base(330000)
    {
    }

    protected override void DefineClassTypes()
    {
      this.AddClassDefinition(typeof (Army), 3);
      this.AddClassDefinition(typeof (BarterManager), 4);
      this.AddClassDefinition(typeof (BarterResult), 12);
      this.AddClassDefinition(typeof (Building), 13);
      this.AddClassDefinition(typeof (BuildingType), 15);
      this.AddClassDefinition(typeof (Campaign), 16);
      this.AddClassDefinition(typeof (CampaignBehaviorDataStore), 17);
      this.AddClassDefinition(typeof (CampaignInformationManager), 22);
      this.AddClassDefinition(typeof (CampaignObjectBase), 23);
      this.AddClassDefinition(typeof (MapTimeTracker), 24);
      this.AddClassDefinition(typeof (CharacterPerks), 26);
      this.AddClassDefinition(typeof (CharacterTraits), 27);
      this.AddClassDefinition(typeof (HeroTraitDeveloper), 28);
      this.AddClassDefinition(typeof (HeroDeveloper), 29);
      this.AddClassDefinition(typeof (CharacterObject), 30);
      this.AddClassDefinition(typeof (CharacterRelationManager), 31);
      this.AddClassDefinition(typeof (Clan), 32);
      this.AddClassDefinition(typeof (Alley), 33);
      this.AddClassDefinition(typeof (Concept), 35);
      this.AddClassDefinition(typeof (CultureTrait), 37);
      this.AddClassDefinition(typeof (CultureObject), 38);
      this.AddClassDefinition(typeof (FactionManager), 42);
      this.AddClassDefinition(typeof (MapStateData), 46);
      this.AddClassDefinition(typeof (MenuContext), 47);
      this.AddClassDefinition(typeof (Hero), 48);
      this.AddClassDefinition(typeof (Hideout), 49);
      this.AddClassDefinition(typeof (IssueBase), 50);
      this.AddClassDefinition(typeof (IssueEffect), 51);
      this.AddClassDefinition(typeof (IssueManager), 52);
      this.AddClassDefinition(typeof (Kingdom), 53);
      this.AddClassDefinition(typeof (KingdomManager), 54);
      this.AddClassDefinition(typeof (Location), 55);
      this.AddClassDefinition(typeof (AccompanyingCharacter), 56);
      this.AddClassDefinition(typeof (LocationComplex), 57);
      this.AddClassDefinition(typeof (LogEntry), 60);
      this.AddClassDefinition(typeof (LogEntryHistory), 61);
      this.AddClassDefinition(typeof (MapEvent), 63);
      this.AddClassDefinition(typeof (MapEventManager), 64);
      this.AddClassDefinition(typeof (MapEventParty), 65);
      this.AddClassDefinition(typeof (LootCollector), 66);
      this.AddClassDefinition(typeof (MapEventSide), 67);
      this.AddClassDefinition(typeof (FakeMarketData), 68);
      this.AddClassDefinition(typeof (VillageMarketData), 69);
      this.AddClassDefinition(typeof (TownMarketData), 70);
      this.AddClassDefinition(typeof (PartyTemplateObject), 71);
      this.AddClassDefinition(typeof (MobileParty), 74);
      this.AddClassDefinition(typeof (MobilePartyAi), 76);
      this.AddClassDefinition(typeof (PartyBase), 77);
      this.AddClassDefinition(typeof (PlayerCaptivity), 79);
      this.AddClassDefinition(typeof (CampaignBattleResult), 80);
      this.AddClassDefinition(typeof (PlayerEncounter), 81);
      this.AddClassDefinition(typeof (PolicyObject), 85);
      this.AddClassDefinition(typeof (QuestBase), 86);
      this.AddClassDefinition(typeof (JournalLog), 87);
      this.AddClassDefinition(typeof (QuestManager), 88);
      this.AddClassDefinition(typeof (QuestTaskBase), 89);
      this.AddClassDefinition(typeof (Romance), 90);
      this.AddClassDefinition(typeof (ItemRoster), 91);
      this.AddClassDefinition(typeof (TroopRoster), 93);
      this.AddClassDefinition(typeof (FlattenedTroopRoster), 94);
      this.AddClassDefinition(typeof (Settlement), 95);
      this.AddClassDefinition(typeof (SettlementArea), 96);
      this.AddClassDefinition(typeof (SettlementComponent), 97);
      this.AddClassDefinition(typeof (SiegeEvent), 98);
      this.AddClassDefinition(typeof (SiegeEventManager), 99);
      this.AddClassDefinition(typeof (SiegeStrategy), 100);
      this.AddClassDefinition(typeof (TournamentGame), 101);
      this.AddClassDefinition(typeof (Fief), 102);
      this.AddClassDefinition(typeof (Town), 103);
      this.AddClassDefinition(typeof (Track), 104);
      this.AddClassDefinition(typeof (TrackedObject), 106);
      this.AddClassDefinition(typeof (TraitObject), 109);
      this.AddClassDefinition(typeof (Village), 112);
      this.AddClassDefinition(typeof (VillageType), 113);
      this.AddClassDefinition(typeof (VisualTrackerManager), 114);
      this.AddClassDefinition(typeof (Workshop), 115);
      this.AddClassDefinition(typeof (WorkshopType), 116);
      this.AddClassDefinition(typeof (FightTournamentGame), 119);
      this.AddClassDefinition(typeof (TournamentManager), 122);
      this.AddClassDefinition(typeof (CaptureAndBringNpcTask), 123);
      this.AddClassDefinition(typeof (ChangeCommonAreaOwnerQuestTask), 124);
      this.AddClassDefinition(typeof (ChangeSettlementOwnerTask), 125);
      this.AddClassDefinition(typeof (DefeatPartyQuestTask), 126);
      this.AddClassDefinition(typeof (ArmyCreationLogEntry), 128);
      this.AddClassDefinition(typeof (ArmyDispersionLogEntry), 129);
      this.AddClassDefinition(typeof (BattleStartedLogEntry), 130);
      this.AddClassDefinition(typeof (BesiegeSettlementLogEntry), 131);
      this.AddClassDefinition(typeof (ChangeAlleyOwnerLogEntry), 132);
      this.AddClassDefinition(typeof (ChangeRomanticStateLogEntry), 133);
      this.AddClassDefinition(typeof (ChangeSettlementOwnerLogEntry), 134);
      this.AddClassDefinition(typeof (CharacterBecameFugitiveLogEntry), 135);
      this.AddClassDefinition(typeof (CharacterBornLogEntry), 136);
      this.AddClassDefinition(typeof (CharacterInsultedLogEntry), 137);
      this.AddClassDefinition(typeof (CharacterKilledLogEntry), 138);
      this.AddClassDefinition(typeof (CharacterMarriedLogEntry), 139);
      this.AddClassDefinition(typeof (ChildbirthLogEntry), 140);
      this.AddClassDefinition(typeof (ClanChangeKingdomLogEntry), 141);
      this.AddClassDefinition(typeof (ClanLeaderChangedLogEntry), 142);
      this.AddClassDefinition(typeof (CommonAreaFightLogEntry), 143);
      this.AddClassDefinition(typeof (DeclareWarLogEntry), 145);
      this.AddClassDefinition(typeof (DefeatCharacterLogEntry), 146);
      this.AddClassDefinition(typeof (DestroyMobilePartyLogEntry), 147);
      this.AddClassDefinition(typeof (GatherArmyLogEntry), 148);
      this.AddClassDefinition(typeof (KingdomDecisionConcludedLogEntry), 149);
      this.AddClassDefinition(typeof (MakePeaceLogEntry), 150);
      this.AddClassDefinition(typeof (MercenaryClanChangedKingdomLogEntry), 151);
      this.AddClassDefinition(typeof (OverruleInfluenceLogEntry), 152);
      this.AddClassDefinition(typeof (PlayerAttackAlleyLogEntry), 153);
      this.AddClassDefinition(typeof (PlayerBattleEndedLogEntry), 154);
      this.AddClassDefinition(typeof (PlayerMeetLordLogEntry), 155);
      this.AddClassDefinition(typeof (PregnancyLogEntry), 156);
      this.AddClassDefinition(typeof (RebellionStartedLogEntry), 157);
      this.AddClassDefinition(typeof (SettlementClaimedLogEntry), 158);
      this.AddClassDefinition(typeof (TakePrisonerLogEntry), 159);
      this.AddClassDefinition(typeof (EndCaptivityLogEntry), 160);
      this.AddClassDefinition(typeof (TournamentWonLogEntry), 161);
      this.AddClassDefinition(typeof (VillageStateChangedLogEntry), 162);
      this.AddClassDefinition(typeof (DecisionOutcome), 164);
      this.AddClassDefinition(typeof (ExpelClanFromKingdomDecision), 165);
      this.AddClassDefinition(typeof (KingdomDecision), 166);
      this.AddClassDefinition(typeof (KingdomPolicyDecision), 167);
      this.AddClassDefinition(typeof (SettlementClaimantDecision), 168);
      this.AddClassDefinition(typeof (SettlementClaimantPreliminaryDecision), 169);
      this.AddClassDefinition(typeof (Supporter), 170);
      this.AddClassDefinition(typeof (Barterable), 173);
      this.AddClassDefinition(typeof (FiefBarterable), 174);
      this.AddClassDefinition(typeof (GoldBarterable), 175);
      this.AddClassDefinition(typeof (ItemBarterable), 176);
      this.AddClassDefinition(typeof (JoinKingdomAsClanBarterable), 177);
      this.AddClassDefinition(typeof (LeaveKingdomAsClanBarterable), 178);
      this.AddClassDefinition(typeof (MarriageBarterable), 179);
      this.AddClassDefinition(typeof (MercenaryJoinKingdomBarterable), 180);
      this.AddClassDefinition(typeof (PeaceBarterable), 181);
      this.AddClassDefinition(typeof (SetPrisonerFreeBarterable), 182);
      this.AddClassDefinition(typeof (TradeRumor), 183);
      this.AddClassDefinition(typeof (CampaignBehaviorDataStore.BehaviorSaveData), 184);
      this.AddClassDefinition(typeof (CharacterRelationManager.HeroRelations), 186);
      this.AddClassDefinition(typeof (StanceLink), 188);
      this.AddClassDefinition(typeof (Romance.RomanticState), 191);
      this.AddClassDefinition(typeof (SiegeEvent.RangedSiegeEngine), 194);
      this.AddClassDefinition(typeof (SiegeEvent.SiegeEngineConstructionProgress), 195);
      this.AddClassDefinition(typeof (ExpelClanFromKingdomDecision.ExpelClanDecisionOutcome), 203);
      this.AddClassDefinition(typeof (KingdomPolicyDecision.PolicyDecisionOutcome), 204);
      this.AddClassDefinition(typeof (SettlementClaimantDecision.ClanAsDecisionOutcome), 205);
      this.AddClassDefinition(typeof (SettlementClaimantPreliminaryDecision.SettlementClaimantPreliminaryOutcome), 206);
      this.AddClassDefinition(typeof (SiegeEvent.SiegeEnginesContainer), 226);
      this.AddClassDefinition(typeof (SiegeEvent.SiegeEngineMissile), 227);
      this.AddClassDefinition(typeof (SiegeEvent.SiegeEnginesContainer.RemovedSiegeEngine), 228);
      this.AddClassDefinition(typeof (SafePassageBarterable), 229);
      this.AddClassDefinition(typeof (CampaignBehaviorManager), 230);
      this.AddClassDefinition(typeof (JournalLogEntry), 236);
      this.AddClassDefinition(typeof (DeclareWarDecision), 237);
      this.AddClassDefinition(typeof (DeclareWarDecision.DeclareWarDecisionOutcome), 238);
      this.AddClassDefinition(typeof (MakePeaceKingdomDecision), 239);
      this.AddClassDefinition(typeof (MakePeaceKingdomDecision.MakePeaceDecisionOutcome), 240);
      this.AddClassDefinition(typeof (PerkObject), 241);
      this.AddClassDefinition(typeof (PlayerReputationChangesLogEntry), 243);
      this.AddClassDefinition(typeof (BesiegerCamp), 245);
      this.AddClassDefinition(typeof (KingdomDecisionAddedLogEntry), 246);
      this.AddClassDefinition(typeof (ArmyCreationMapNotification), 247);
      this.AddClassDefinition(typeof (ArmyDispersionMapNotification), 248);
      this.AddClassDefinition(typeof (ChildBornMapNotification), 249);
      this.AddClassDefinition(typeof (DeathMapNotification), 250);
      this.AddClassDefinition(typeof (KingdomDecisionMapNotification), 251);
      this.AddClassDefinition(typeof (MarriageMapNotification), 252);
      this.AddClassDefinition(typeof (PeaceMapNotification), 253);
      this.AddClassDefinition(typeof (SettlementRebellionMapNotification), 254);
      this.AddClassDefinition(typeof (WarMapNotification), 256);
      this.AddClassDefinition(typeof (KingSelectionKingdomDecision), 257);
      this.AddClassDefinition(typeof (KingSelectionKingdomDecision.KingSelectionDecisionOutcome), 258);
      this.AddClassDefinition(typeof (PersuasionOptionArgs), 259);
      this.AddClassDefinition(typeof (PersuasionAttempt), 260);
      this.AddClassDefinition(typeof (CampaignOptions), 261);
      this.AddClassDefinition(typeof (TransferPrisonerBarterable), 262);
      this.AddClassDefinition(typeof (KingdomDestroyedLogEntry), 263);
      this.AddClassDefinition(typeof (SettlementUnderSiegeMapNotification), 264);
      this.AddClassDefinition(typeof (SettlementOwnerChangedMapNotification), 265);
      this.AddClassDefinition(typeof (IssueQuestLogEntry), 266);
      this.AddClassDefinition(typeof (IssueQuestStartLogEntry), 267);
      this.AddClassDefinition(typeof (IssueCoolDownData), 268);
      this.AddClassDefinition(typeof (HeroRelatedIssueCoolDownData), 269);
      this.AddClassDefinition(typeof (EducationMapNotification), 271);
      this.AddClassDefinition(typeof (PartyComponent), 272);
      this.AddClassDefinition(typeof (GarrisonPartyComponent), 273);
      this.AddClassDefinition(typeof (LordPartyComponent), 274);
      this.AddClassDefinition(typeof (VillagerPartyComponent), 275);
      this.AddClassDefinition(typeof (BanditPartyComponent), 277);
      this.AddClassDefinition(typeof (CaravanPartyComponent), 278);
      this.AddClassDefinition(typeof (MilitiaPartyComponent), 280);
      this.AddClassDefinition(typeof (FactionManagerStancesData), 281);
      this.AddClassDefinition(typeof (CampaignObjectManager), 282);
      this.AddClassDefinition(typeof (TraitChangedMapNotification), 283);
      this.AddClassDefinition(typeof (WarPartyComponent), 284);
      this.AddClassDefinition(typeof (RansomOfferMapNotification), 285);
      this.AddClassDefinition(typeof (CampaignPeriodicEventManager), 286);
      this.AddClassDefinition(typeof (CustomPartyComponent), 287);
      this.AddClassDefinition(typeof (CharacterAttributes), 288);
      this.AddClassDefinition(typeof (CraftingOrder), 289);
      this.AddClassDefinition(typeof (PeaceOfferMapNotification), 291);
      this.AddClassDefinition(typeof (PlayerCharacterChangedLogEntry), 292);
      this.AddClassDefinition(typeof (CampaignPeriodicEventManager.PeriodicTicker<>), 293);
      this.AddClassDefinition(typeof (OrderOfBattleCampaignBehavior.OrderOfBattleFormationData), 295);
      this.AddClassDefinition(typeof (MarriageOfferMapNotification), 297);
      this.AddClassDefinition(typeof (PartyLeaderChangeNotification), 298);
      this.AddClassDefinition(typeof (MercenaryOfferMapNotification), 299);
      this.AddClassDefinition(typeof (VassalOfferMapNotification), 300);
      this.AddClassDefinition(typeof (HeirComeOfAgeMapNotification), 301);
      this.AddClassDefinition(typeof (KingdomDestroyedMapNotification), 302);
      this.AddClassDefinition(typeof (ClanDestroyedLogEntry), 303);
      this.AddClassDefinition(typeof (SiegeAftermathLogEntry), 304);
      this.AddClassDefinition(typeof (AlleyLeaderDiedMapNotification), 305);
      this.AddClassDefinition(typeof (AlleyUnderAttackMapNotification), 306);
      this.AddClassDefinition(typeof (PlayerRetiredLogEntry), 307);
      this.AddClassDefinition(typeof (RetirementSettlementComponent), 308);
      this.AddClassDefinition(typeof (MapEventComponent), 309);
      this.AddClassDefinition(typeof (ForceSuppliesEventComponent), 310);
      this.AddClassDefinition(typeof (ForceVolunteersEventComponent), 311);
      this.AddClassDefinition(typeof (RaidEventComponent), 312);
      this.AddClassDefinition(typeof (FieldBattleEventComponent), 313);
      this.AddClassDefinition(typeof (HideoutEventComponent), 314);
      this.AddClassDefinition(typeof (SiegeAmbushEventComponent), 315);
    }

    protected override void DefineStructTypes()
    {
      this.AddStructDefinition(typeof (CampaignTime), 1001);
      this.AddStructDefinition(typeof (ItemData), 1002);
      this.AddStructDefinition(typeof (PartyTemplateStack), 1003);
      this.AddStructDefinition(typeof (FlattenedTroopRosterElement), 1004);
      this.AddStructDefinition(typeof (TroopRosterElement), 1005);
      this.AddStructDefinition(typeof (Town.SellLog), 1009);
    }

    protected override void DefineEnumTypes()
    {
      this.AddEnumDefinition(typeof (CampaignTimeControlMode), 2001);
      this.AddEnumDefinition(typeof (Occupation), 2002);
      this.AddEnumDefinition(typeof (FacesMaleHair), 2003);
      this.AddEnumDefinition(typeof (FacesFemaleHair), 2004);
      this.AddEnumDefinition(typeof (FacesMaleFacialHair), 2005);
      this.AddEnumDefinition(typeof (CampaignGameMode), 2008);
      this.AddEnumDefinition(typeof (ImportanceEnum), 2009);
      this.AddEnumDefinition(typeof (MapEventState), 2011);
      this.AddEnumDefinition(typeof (AiBehavior), 2013);
      this.AddEnumDefinition(typeof (MoveModeType), 2014);
      this.AddEnumDefinition(typeof (PlayerEncounterState), 2015);
      this.AddEnumDefinition(typeof (RosterTroopState), 2016);
      this.AddEnumDefinition(typeof (Army.AIBehaviorFlags), 2020);
      this.AddEnumDefinition(typeof (Army.ArmyTypes), 2021);
      this.AddEnumDefinition(typeof (Army.ArmyDispersionReason), 2023);
      this.AddEnumDefinition(typeof (MobileParty.PartyObjective), 2025);
      this.AddEnumDefinition(typeof (StanceType), 2029);
      this.AddEnumDefinition(typeof (ActionNotes), 2030);
      this.AddEnumDefinition(typeof (MenuContext.MenuContextState), 2031);
      this.AddEnumDefinition(typeof (Hero.CharacterStates), 2032);
      this.AddEnumDefinition(typeof (IssueBase.IssueState), 2034);
      this.AddEnumDefinition(typeof (MapEvent.BattleTypes), 2036, (IEnumResolver) new BattleTypeEnumResolver());
      this.AddEnumDefinition(typeof (QuestBase.QuestStates), 2041);
      this.AddEnumDefinition(typeof (QuestTaskBase.FinishStates), 2042);
      this.AddEnumDefinition(typeof (Romance.RomanceLevelEnum), 2043);
      this.AddEnumDefinition(typeof (Settlement.SiegeState), 2048);
      this.AddEnumDefinition(typeof (SettlementComponent.ProsperityLevel), 2049);
      this.AddEnumDefinition(typeof (TournamentGame.QualificationMode), 2051);
      this.AddEnumDefinition(typeof (Village.VillageStates), 2055);
      this.AddEnumDefinition(typeof (KingdomDecision.SupportStatus), 2056);
      this.AddEnumDefinition(typeof (Supporter.SupportWeights), 2057);
      this.AddEnumDefinition(typeof (KillCharacterAction.KillCharacterActionDetail), 2058);
      this.AddEnumDefinition(typeof (SiegeBombardTargets), 2059);
      this.AddEnumDefinition(typeof (QuestBase.QuestCompleteDetails), 2061);
      this.AddEnumDefinition(typeof (Track.PartyTypeEnum), 2062);
      this.AddEnumDefinition(typeof (SettlementAccessModel.AccessLevel), 2067);
      this.AddEnumDefinition(typeof (SettlementAccessModel.AccessMethod), 2068);
      this.AddEnumDefinition(typeof (SettlementAccessModel.AccessLimitationReason), 2069);
      this.AddEnumDefinition(typeof (SettlementAccessModel.LimitedAccessSolution), 2070);
      this.AddEnumDefinition(typeof (SettlementAccessModel.PreliminaryActionObligation), 2071);
      this.AddEnumDefinition(typeof (SettlementAccessModel.PreliminaryActionType), 2072);
      this.AddEnumDefinition(typeof (PersuasionOptionResult), 2075);
      this.AddEnumDefinition(typeof (PersuasionArgumentStrength), 2076);
      this.AddEnumDefinition(typeof (TraitEffect), 2077);
      this.AddEnumDefinition(typeof (CampaignOptions.Difficulty), 2078);
      this.AddEnumDefinition(typeof (LogType), 2079);
      this.AddEnumDefinition(typeof (EndCaptivityDetail), 2080, (IEnumResolver) new EndCaptivityDetailEnumResolver());
      this.AddEnumDefinition(typeof (BuildingEffectEnum), 2090);
      this.AddEnumDefinition(typeof (SiegeAftermathAction.SiegeAftermath), 2100);
      this.AddEnumDefinition(typeof (IssueBase.IssueUpdateDetails), 2120);
      this.AddEnumDefinition(typeof (DeploymentFormationClass), 2130);
      this.AddEnumDefinition(typeof (FormationFilterType), 2140);
    }

    protected override void DefineInterfaceTypes()
    {
      this.AddInterfaceDefinition(typeof (IFaction), 3001);
      this.AddInterfaceDefinition(typeof (ITrackableCampaignObject), 3002);
      this.AddInterfaceDefinition(typeof (ILocatable<>), 3003);
      this.AddInterfaceDefinition(typeof (ISiegeEventSide), 3004);
      this.AddInterfaceDefinition(typeof (ISpottable), 3005);
    }

    protected override void DefineGenericClassDefinitions()
    {
      this.ConstructGenericClassDefinition(typeof (MBReadOnlyDictionary<Hero, short>));
      this.ConstructGenericClassDefinition(typeof (Tuple<CampaignTime, IFaction>));
      this.ConstructGenericClassDefinition(typeof (Tuple<Kingdom, Kingdom>));
      this.ConstructGenericClassDefinition(typeof (Tuple<Kingdom, CampaignTime>));
      this.ConstructGenericClassDefinition(typeof (Tuple<TraitObject, int>));
      this.ConstructGenericClassDefinition(typeof (PriorityQueue<int, KeyValuePair<UniqueTroopDescriptor, MapEventParty>>));
      this.ConstructGenericClassDefinition(typeof (CampaignPeriodicEventManager.PeriodicTicker<MobileParty>));
      this.ConstructGenericClassDefinition(typeof (CampaignPeriodicEventManager.PeriodicTicker<Settlement>));
      this.ConstructGenericClassDefinition(typeof (CampaignPeriodicEventManager.PeriodicTicker<Clan>));
      this.ConstructGenericClassDefinition(typeof (CampaignPeriodicEventManager.PeriodicTicker<Town>));
      this.ConstructGenericClassDefinition(typeof (CampaignPeriodicEventManager.PeriodicTicker<Hero>));
    }

    protected override void DefineGenericStructDefinitions()
    {
      this.ConstructGenericStructDefinition(typeof ((IFaction, IFaction)));
      this.ConstructGenericStructDefinition(typeof (KeyValuePair<UniqueTroopDescriptor, MapEventParty>));
      this.ConstructGenericStructDefinition(typeof (KeyValuePair<int, KeyValuePair<UniqueTroopDescriptor, MapEventParty>>));
      this.ConstructGenericStructDefinition(typeof (KeyValuePair<Hero, short>));
      this.ConstructGenericStructDefinition(typeof (KeyValuePair<Hero, CraftingOrder>));
      this.ConstructGenericStructDefinition(typeof (KeyValuePair<Settlement, ItemRoster>));
    }

    protected override void DefineContainerDefinitions()
    {
      this.ConstructContainerDefinition(typeof (VillageType[]));
      this.ConstructContainerDefinition(typeof (BuildingType[]));
      this.ConstructContainerDefinition(typeof (Hero[]));
      this.ConstructContainerDefinition(typeof (Town[]));
      this.ConstructContainerDefinition(typeof (CharacterObject[]));
      this.ConstructContainerDefinition(typeof (Workshop[]));
      this.ConstructContainerDefinition(typeof (MapEventSide[]));
      this.ConstructContainerDefinition(typeof (Clan[]));
      this.ConstructContainerDefinition(typeof (SiegeEvent.SiegeEngineConstructionProgress[]));
      this.ConstructContainerDefinition(typeof (TroopRosterElement[]));
      this.ConstructContainerDefinition(typeof (Town.SellLog[]));
      this.ConstructContainerDefinition(typeof (CampaignTime[]));
      this.ConstructContainerDefinition(typeof (MobileParty[]));
      this.ConstructContainerDefinition(typeof (Settlement[]));
      this.ConstructContainerDefinition(typeof (CraftingOrder[]));
      this.ConstructContainerDefinition(typeof (KeyValuePair<Hero, CraftingOrder>[]));
      this.ConstructContainerDefinition(typeof (KeyValuePair<Hero, short>[]));
      this.ConstructContainerDefinition(typeof (Tuple<TraitObject, int>[]));
      this.ConstructContainerDefinition(typeof (List<KingdomDecision>));
      this.ConstructContainerDefinition(typeof (List<QuestBase>));
      this.ConstructContainerDefinition(typeof (List<Hero>));
      this.ConstructContainerDefinition(typeof (List<Romance.RomanticState>));
      this.ConstructContainerDefinition(typeof (List<SiegeEvent>));
      this.ConstructContainerDefinition(typeof (List<MapEvent>));
      this.ConstructContainerDefinition(typeof (List<LogEntry>));
      this.ConstructContainerDefinition(typeof (List<TrackedObject>));
      this.ConstructContainerDefinition(typeof (List<TournamentGame>));
      this.ConstructContainerDefinition(typeof (List<Track>));
      this.ConstructContainerDefinition(typeof (List<Workshop>));
      this.ConstructContainerDefinition(typeof (List<Alley>));
      this.ConstructContainerDefinition(typeof (List<MobileParty>));
      this.ConstructContainerDefinition(typeof (List<SettlementComponent>));
      this.ConstructContainerDefinition(typeof (List<Village>));
      this.ConstructContainerDefinition(typeof (List<CharacterObject>));
      this.ConstructContainerDefinition(typeof (List<CultureObject>));
      this.ConstructContainerDefinition(typeof (List<IFaction>));
      this.ConstructContainerDefinition(typeof (List<Clan>));
      this.ConstructContainerDefinition(typeof (List<Kingdom>));
      this.ConstructContainerDefinition(typeof (List<TraitObject>));
      this.ConstructContainerDefinition(typeof (List<VillageType>));
      this.ConstructContainerDefinition(typeof (List<BuildingType>));
      this.ConstructContainerDefinition(typeof (List<PartyTemplateObject>));
      this.ConstructContainerDefinition(typeof (List<Settlement>));
      this.ConstructContainerDefinition(typeof (List<WorkshopType>));
      this.ConstructContainerDefinition(typeof (List<Hideout>));
      this.ConstructContainerDefinition(typeof (List<RetirementSettlementComponent>));
      this.ConstructContainerDefinition(typeof (List<Town>));
      this.ConstructContainerDefinition(typeof (List<MenuContext>));
      this.ConstructContainerDefinition(typeof (List<PolicyObject>));
      this.ConstructContainerDefinition(typeof (List<Concept>));
      this.ConstructContainerDefinition(typeof (List<IssueBase>));
      this.ConstructContainerDefinition(typeof (List<IssueEffect>));
      this.ConstructContainerDefinition(typeof (List<SiegeStrategy>));
      this.ConstructContainerDefinition(typeof (List<Building>));
      this.ConstructContainerDefinition(typeof (List<Army>));
      this.ConstructContainerDefinition(typeof (List<Location>));
      this.ConstructContainerDefinition(typeof (List<SiegeEvent.SiegeEngineConstructionProgress>));
      this.ConstructContainerDefinition(typeof (List<AccompanyingCharacter>));
      this.ConstructContainerDefinition(typeof (List<TroopRosterElement>));
      this.ConstructContainerDefinition(typeof (List<PartyBase>));
      this.ConstructContainerDefinition(typeof (List<QuestTaskBase>));
      this.ConstructContainerDefinition(typeof (List<JournalLog>));
      this.ConstructContainerDefinition(typeof (List<KeyValuePair<int, KeyValuePair<UniqueTroopDescriptor, MapEventParty>>>));
      this.ConstructContainerDefinition(typeof (List<SiegeEvent.SiegeEngineMissile>));
      this.ConstructContainerDefinition(typeof (List<SiegeEvent.SiegeEnginesContainer.RemovedSiegeEngine>));
      this.ConstructContainerDefinition(typeof (List<Barterable>));
      this.ConstructContainerDefinition(typeof (List<TradeRumor>));
      this.ConstructContainerDefinition(typeof (List<ITrackableCampaignObject>));
      this.ConstructContainerDefinition(typeof (List<PerkObject>));
      this.ConstructContainerDefinition(typeof (List<CampaignTime>));
      this.ConstructContainerDefinition(typeof (List<Supporter>));
      this.ConstructContainerDefinition(typeof (List<PersuasionAttempt>));
      this.ConstructContainerDefinition(typeof (List<IssueBase.IssueUpdateDetails>));
      this.ConstructContainerDefinition(typeof (List<KeyValuePair<Hero, short>>));
      this.ConstructContainerDefinition(typeof (List<Tuple<Kingdom, Kingdom>>));
      this.ConstructContainerDefinition(typeof (List<IssueCoolDownData>));
      this.ConstructContainerDefinition(typeof (List<MapEventParty>));
      this.ConstructContainerDefinition(typeof (List<CraftingOrder>));
      this.ConstructContainerDefinition(typeof (List<OrderOfBattleCampaignBehavior.OrderOfBattleFormationData>));
      this.ConstructContainerDefinition(typeof (Dictionary<Hero, short>));
      this.ConstructContainerDefinition(typeof (Queue<Building>));
      this.ConstructContainerDefinition(typeof (Dictionary<MBGUID, MobileParty>));
      this.ConstructContainerDefinition(typeof (Dictionary<MBGUID, CharacterObject>));
      this.ConstructContainerDefinition(typeof (Dictionary<MBGUID, CultureObject>));
      this.ConstructContainerDefinition(typeof (Dictionary<MBGUID, Clan>));
      this.ConstructContainerDefinition(typeof (Dictionary<MBGUID, Kingdom>));
      this.ConstructContainerDefinition(typeof (Dictionary<MBGUID, TraitObject>));
      this.ConstructContainerDefinition(typeof (Dictionary<MBGUID, VillageType>));
      this.ConstructContainerDefinition(typeof (Dictionary<MBGUID, BuildingType>));
      this.ConstructContainerDefinition(typeof (Dictionary<MBGUID, PartyTemplateObject>));
      this.ConstructContainerDefinition(typeof (Dictionary<MBGUID, Settlement>));
      this.ConstructContainerDefinition(typeof (Dictionary<MBGUID, WorkshopType>));
      this.ConstructContainerDefinition(typeof (Dictionary<MBGUID, Village>));
      this.ConstructContainerDefinition(typeof (Dictionary<MBGUID, Hideout>));
      this.ConstructContainerDefinition(typeof (Dictionary<MBGUID, RetirementSettlementComponent>));
      this.ConstructContainerDefinition(typeof (Dictionary<MBGUID, Town>));
      this.ConstructContainerDefinition(typeof (Dictionary<MBGUID, Hero>));
      this.ConstructContainerDefinition(typeof (Dictionary<MBGUID, QuestBase>));
      this.ConstructContainerDefinition(typeof (Dictionary<MBGUID, MapEvent>));
      this.ConstructContainerDefinition(typeof (Dictionary<MBGUID, MenuContext>));
      this.ConstructContainerDefinition(typeof (Dictionary<MBGUID, PolicyObject>));
      this.ConstructContainerDefinition(typeof (Dictionary<MBGUID, Concept>));
      this.ConstructContainerDefinition(typeof (Dictionary<MBGUID, IssueBase>));
      this.ConstructContainerDefinition(typeof (Dictionary<MBGUID, IssueEffect>));
      this.ConstructContainerDefinition(typeof (Dictionary<MBGUID, SiegeStrategy>));
      this.ConstructContainerDefinition(typeof (Dictionary<MBGUID, PerkObject>));
      this.ConstructContainerDefinition(typeof (Dictionary<string, CharacterObject>));
      this.ConstructContainerDefinition(typeof (Dictionary<string, CultureObject>));
      this.ConstructContainerDefinition(typeof (Dictionary<string, MobileParty>));
      this.ConstructContainerDefinition(typeof (Dictionary<string, Clan>));
      this.ConstructContainerDefinition(typeof (Dictionary<string, Kingdom>));
      this.ConstructContainerDefinition(typeof (Dictionary<string, TraitObject>));
      this.ConstructContainerDefinition(typeof (Dictionary<string, VillageType>));
      this.ConstructContainerDefinition(typeof (Dictionary<string, BuildingType>));
      this.ConstructContainerDefinition(typeof (Dictionary<string, PartyTemplateObject>));
      this.ConstructContainerDefinition(typeof (Dictionary<string, Settlement>));
      this.ConstructContainerDefinition(typeof (Dictionary<string, WorkshopType>));
      this.ConstructContainerDefinition(typeof (Dictionary<string, Village>));
      this.ConstructContainerDefinition(typeof (Dictionary<string, Hideout>));
      this.ConstructContainerDefinition(typeof (Dictionary<string, RetirementSettlementComponent>));
      this.ConstructContainerDefinition(typeof (Dictionary<string, Town>));
      this.ConstructContainerDefinition(typeof (Dictionary<string, Hero>));
      this.ConstructContainerDefinition(typeof (Dictionary<string, QuestBase>));
      this.ConstructContainerDefinition(typeof (Dictionary<string, MapEvent>));
      this.ConstructContainerDefinition(typeof (Dictionary<string, MenuContext>));
      this.ConstructContainerDefinition(typeof (Dictionary<string, PolicyObject>));
      this.ConstructContainerDefinition(typeof (Dictionary<string, Concept>));
      this.ConstructContainerDefinition(typeof (Dictionary<string, IssueBase>));
      this.ConstructContainerDefinition(typeof (Dictionary<string, IssueEffect>));
      this.ConstructContainerDefinition(typeof (Dictionary<string, SiegeStrategy>));
      this.ConstructContainerDefinition(typeof (Dictionary<string, Location>));
      this.ConstructContainerDefinition(typeof (Dictionary<string, PerkObject>));
      this.ConstructContainerDefinition(typeof (Dictionary<string, CampaignTime>));
      this.ConstructContainerDefinition(typeof (Dictionary<object, List<QuestBase>>));
      this.ConstructContainerDefinition(typeof (Dictionary<Hero, IssueBase>));
      this.ConstructContainerDefinition(typeof (Dictionary<(IFaction, IFaction), StanceLink>));
      this.ConstructContainerDefinition(typeof (Dictionary<Hero, int>));
      this.ConstructContainerDefinition(typeof (Dictionary<Settlement, List<TournamentGame>>));
      this.ConstructContainerDefinition(typeof (Dictionary<Settlement, TournamentGame>));
      this.ConstructContainerDefinition(typeof (Dictionary<CharacterObject, int>));
      this.ConstructContainerDefinition(typeof (Dictionary<Settlement, float>));
      this.ConstructContainerDefinition(typeof (Dictionary<IFaction, float>));
      this.ConstructContainerDefinition(typeof (Dictionary<IFaction, int>));
      this.ConstructContainerDefinition(typeof (Dictionary<TraitObject, int>));
      this.ConstructContainerDefinition(typeof (Dictionary<ItemCategory, ItemData>));
      this.ConstructContainerDefinition(typeof (Dictionary<UniqueTroopDescriptor, MapEventParty>));
      this.ConstructContainerDefinition(typeof (Dictionary<PartyBase, MapEventParty>));
      this.ConstructContainerDefinition(typeof (Dictionary<SiegeEvent.SiegeEngineConstructionProgress, int>));
      this.ConstructContainerDefinition(typeof (Dictionary<IFaction, List<Settlement>>));
      this.ConstructContainerDefinition(typeof (Dictionary<int, PartyBase>));
      this.ConstructContainerDefinition(typeof (Dictionary<IssueEffect, float>));
      this.ConstructContainerDefinition(typeof (Dictionary<UniqueTroopDescriptor, FlattenedTroopRosterElement>));
      this.ConstructContainerDefinition(typeof (Dictionary<Hero, CampaignTime>));
      this.ConstructContainerDefinition(typeof (Dictionary<string, CampaignBehaviorDataStore.BehaviorSaveData>));
      this.ConstructContainerDefinition(typeof (Dictionary<MobileParty, CampaignTime>));
      this.ConstructContainerDefinition(typeof (Dictionary<CharacterObject, float>));
      this.ConstructContainerDefinition(typeof (Dictionary<MobileParty, int>));
      this.ConstructContainerDefinition(typeof (Dictionary<MobileParty, float>));
      this.ConstructContainerDefinition(typeof (Dictionary<Settlement, CampaignTime>));
      this.ConstructContainerDefinition(typeof (Dictionary<Settlement, int>));
      this.ConstructContainerDefinition(typeof (Dictionary<CharacterObject, CharacterObject>));
      this.ConstructContainerDefinition(typeof (Dictionary<PerkObject, int>));
      this.ConstructContainerDefinition(typeof (Dictionary<Hero, List<CampaignTime>>));
      this.ConstructContainerDefinition(typeof (Dictionary<MobileParty, Town>));
      this.ConstructContainerDefinition(typeof (Dictionary<Village, CampaignTime>));
      this.ConstructContainerDefinition(typeof (Dictionary<Village, bool>));
      this.ConstructContainerDefinition(typeof (Dictionary<Hero, Hero.CharacterStates>));
      this.ConstructContainerDefinition(typeof (Dictionary<Hero, bool>));
      this.ConstructContainerDefinition(typeof (Dictionary<Workshop, int>));
      this.ConstructContainerDefinition(typeof (Dictionary<CharacterObject, FormationClass>));
      this.ConstructContainerDefinition(typeof (Dictionary<PartyBase, float>));
      this.ConstructContainerDefinition(typeof (Dictionary<string, List<IssueCoolDownData>>));
      this.ConstructContainerDefinition(typeof (Dictionary<Clan, int>));
      this.ConstructContainerDefinition(typeof (Dictionary<Clan, CampaignTime>));
      this.ConstructContainerDefinition(typeof (Dictionary<CultureObject, Dictionary<int, int>>));
      this.ConstructContainerDefinition(typeof (Dictionary<MobileParty, List<Settlement>>));
      this.ConstructContainerDefinition(typeof (Dictionary<Building, int>));
      this.ConstructContainerDefinition(typeof (Dictionary<int, MobileParty>));
      this.ConstructContainerDefinition(typeof (Dictionary<Hero, CraftingOrder>));
      this.ConstructContainerDefinition(typeof (Dictionary<string, List<CraftingOrder>>));
      this.ConstructContainerDefinition(typeof (Dictionary<ITrackableCampaignObject, List<QuestBase>>));
      this.ConstructContainerDefinition(typeof (Dictionary<Town, CampaignTime>));
      this.ConstructContainerDefinition(typeof (Dictionary<Kingdom, CampaignTime>));
      this.ConstructContainerDefinition(typeof (Dictionary<FormationFilterType, bool>));
      this.ConstructContainerDefinition(typeof (Dictionary<MobileParty, Vec2>));
      this.ConstructContainerDefinition(typeof (Dictionary<Hero, (int, int)>));
      this.ConstructContainerDefinition(typeof (KeyValuePair<Settlement, ItemRoster>[]));
    }
  }
}
